using System;
using System.Collections.Generic;
using Csla;
using Ent.AccesoDatos;
using System.Data;

namespace EntGuayasSLA.BL.Listas
{
    /// <summary>
    /// Estereotipo: ReadOnlyList
    /// Reponsabilidad: 
    /// Autor: USUARIO
    /// Fecha: 2/11/2014 9:14:14 AM
    /// </summary>
    [Serializable]
    public class ParticipacionSocialLista : ReadOnlyListBase<ParticipacionSocialLista, PartipacionSocialInfo>
    {
        #region Authorization Rules

        private static void AddObjectAuthorizationRules()
        {
            // TODO: add authorization rules
            //AuthorizationRules.AllowGet(typeof(ParticipacionSocialLista), "Role");
        }

        #endregion

        #region Factory Methods

        public static ParticipacionSocialLista GetParticipacionSocialLista(string idExpedienteLicenciamiento)
        {
            return DataPortal.Fetch<ParticipacionSocialLista>(idExpedienteLicenciamiento);
        }

        private ParticipacionSocialLista()
        { /* require use of factory methods */ }

        #endregion

        #region Data Access

        private void DataPortal_Fetch(string criteria)
        {
            RaiseListChangedEvents = false;
            IsReadOnly = false;
            var accesoDatos = new DriveDataBase(TypeDataBase.PostgreSql);
            var parametros = new List<Parametro> 
                    {
                        new Parametro("ec_eli_id", criteria)
                    };
            DataSet datos = accesoDatos.EjecutarDataSet("\"LISTA_ACT_PART_SOC\"", parametros);
            foreach (DataRow items in datos.Tables[0].Rows)
            {
                this.Add(PartipacionSocialInfo.GetPartipacionSocialInfo(items));
            }
            IsReadOnly = true;
            RaiseListChangedEvents = true;
        }

        #endregion
    }
    /// <summary>
    /// Estereotipo: ReadOnlyChild
    /// Reponsabilidad: 
    /// Autor: USUARIO
    /// Fecha: 2/11/2014 9:14:14 AM
    /// </summary>
    [Serializable]
    public class PartipacionSocialInfo : ReadOnlyBase<PartipacionSocialInfo>
    {
        #region Business Methods

        public Guid Id { get; internal set; }
        public DateTime FechaSocializacion { get; internal set; }
        public DateTime FechaInicioPublicacion { get; internal set; }
        public DateTime FechaFinPublicacion { get; internal set; }
        public DateTime FechaRecortePresa { get; internal set; }
        public string IdPersona { get; internal set; }
        public string Persona { get; internal set; }
        public string ExpedienteLicenciamiento { get; internal set; }
        #endregion

        #region Factory Methods

        internal static PartipacionSocialInfo GetPartipacionSocialInfo(DataRow childData)
        {
            return DataPortal.FetchChild<PartipacionSocialInfo>(childData);
        }

        private PartipacionSocialInfo()
        { /* require use of factory methods */ }

        #endregion

        #region Data Access

        private void Child_Fetch(DataRow childData)
        {
                
            Id = Guid.Parse(childData["aps_id"].ToString());
            FechaSocializacion     = DateTime.Parse(childData["aps_fecha_socializacion"].ToString());
            FechaInicioPublicacion = DateTime.Parse(childData["aps_fi_publicacion"].ToString());
            FechaFinPublicacion    = DateTime.Parse(childData["aps_ff_publicacion"].ToString());
            FechaRecortePresa      = DateTime.Parse(childData["aps_fecha_rec_pre"].ToString());
            IdPersona = childData["per_id"].ToString();
            Persona   = childData["nombres"].ToString();
            ExpedienteLicenciamiento = childData["eli_id"].ToString();
        }

        #endregion
    }
}
